package me.itsoo.artemis.framework.repository.datasource;

import java.io.Closeable;
import java.sql.Connection;

/**
 * SqlConnection
 *
 * @author zxy
 * @version 0.0.1
 * @since 2023/5/19
 */
public interface SqlConnection extends Connection, Closeable {

    /**
     * 获取源连接
     *
     * @return Connection
     */
    Connection getSourceConnection();

    /**
     * 获取最后使用时间
     *
     * @return long
     */
    long getLastUsedTimestamp();

    /**
     * 设置最后使用时间
     *
     * @param timestamp long
     */
    void setLastUsedTimestamp(long timestamp);

    /**
     * 判断连接是否有效
     *
     * @return boolean
     */
    boolean isValid();

    /**
     * 判断连接是否为关闭状态（子类需重写）
     *
     * @return boolean
     */
    @Override
    default boolean isClosed() {
        throw new UnsupportedOperationException("Oops...");
    }
}
